Provision Infrastructure |
Buy servers, rack them, install OS manually |
Use cloud APIs or scripts to spin up nodes or a managed K8s cluster |
Networking |
Static IPs, manual firewall/VLAN config |
Auto-assigned IPs, Services, Ingress, and Network Policies |
OS & Dependencies |
Install and patch shared runtimes (Java, .NET, etc.) |
Use minimal container base images with isolated app dependencies |
Deploy App |
Copy files over SSH, run manual scripts or Octopus/TeamCity |
Use kubectl apply or Helm to deploy containerized apps |
Configuration |
Config files on disk, hardcoded or edited manually |
ConfigMaps and Secrets, injected into pods via env vars or volumes |
Scaling |
Clone VMs or request new servers |
replicas: N or use the Horizontal Pod Autoscaler |
Monitoring |
Nagios, New Relic, log into boxes to grep logs |
Prometheus + Grafana + FluentBit + Loki |
Health Checks |
Often missing or custom cron scripts |
Native livenessProbe and readinessProbe in each pod |
Recovery |
Manual restarts or entire box failover |
Auto-restarts via Kubernetes controllers |
Updates / Rollbacks |
Manual patching, coordination-heavy |
Declarative rolling updates and one-command rollbacks |